1. Field of the Invention
This invention relates generally to computer systems, and more particularly to computer systems that can be configured to boot from a desired storage device using the standard boot sequence priority defined by a system BIOS code.
2. Description of the Related Art
Computer systems today typically have several host adapters to enable the computer system to communicate with internal and external peripheral devices, and communicate over a network. Commonly, the host adapters are connected to peripheral devices (e.g., drives) that enable data to be written or read by the computer system to or from various storage media. For example, such devices include floppy drives, tape drives, hard drives, CD-ROMs, CD-R drives, scanners, and DVD drives, among others. These peripheral devices generally communicate with a computer system through specific interface protocols, which most commonly include what are known as IDE/EIDE protocols and SCSI protocols. Thus, peripheral device manufactures will generally manufacture protocol specific devices, which are designated to be, for example, either an IDE/EIDE device or a SCSI device.
As is well known, the basic operation of a computer system includes booting its basic software algorithms to prepare the computer system for normal operation that is controlled by its operating system (OS). Such booting is accomplished by reading and then executing commands of the basic software algorithms from a particular medium (typically the main hard disk). Therefore, the booting operation will require identifying the device (which is connected to the computer system) that has the medium that is to be read. The identified device is commonly known as "the boot device."
Conventionally, booting operations controlled by a system BIOS of a computer system are rigidly fixed to search for IDE/EIDE devices and then search for lower priority SCSI devices, and identifying the first found IDE/EIDE device as the boot device. Accordingly, if an IDE/EIDE device is connected to the computer system (which is most commonly the case), the system will automatically boot from the IDE device, whether or not the user prefers to boot from the IDE/EIDE device. Even if the user prefers to boot from a higher performance SCSI device, the user's computer system will not allow the user to indicate a booting preference.
With this in mind, FIG. 1A shows a simplified diagram of a computer system 100 including a motherboard 102 that is used to interconnect peripheral devices to the computer system. In this example, the motherboard 102 includes a PCI bus 104 which typically has a number of PCI slots that are configured to receive host adapter cards that interconnect to peripheral devices. Most computer systems 102 also include connectors such as IDE connectors 106 (or EIDE connectors) which interconnect to well known storage devices. For simplicity, two host adapters 108a and 108b are shown coupling up to the PCI bus 104 and respectively connecting to SCSI hard drives 110a and 110b. Typically, the host adapters 108 have option ROM chips that contain a basic input/output system (BIOS) 112. As is well known, the BIOS 112 enables the card to communicate its attributes (and identify which peripheral devices are connected thereto) through the PCI bus 104 during a boot-up process that is controlled by a system BIOS. A computer's system BIOS is typically integrated into the motherboard 102 in the form of a ROM chip or suitable flash memory chip.
However, if a host adapter does not have a BIOS 112, such as host adapter 108a, devices connected to the host adapter 108 cannot operate as boot devices. That is, the hard drive 110a may not function as the boot device for the computer system 100, however, the hard drive 110b connected to the host adapter 108b may function as a boot device. As mentioned above, an IDE connector 106 is shown connected to an IDE hard drive 110c. Accordingly, when an IDE hard drive 110c is connected to an IDE connector on the motherboard 102, that hard drive 110c will be given boot priority over SCSI hard drives 110.
FIG. 1B shows a boot priority list 150 which is followed by the system BIOS of a computer system 100 during its booting process. As pictorially illustrated, a floppy disk drive 152 is given highest priority by the system BIOS, and if no floppy disk is inserted into the computer system, the next highest boot priority will be IDE drive(s) 154. If there is no IDE drive connected to an IDE connector 106, the system may then boot from a SCSI drive at 156, which is the lowest boot priority type of device. Although the floppy disk drives 152 are given the highest boot priority by the system BIOS of a computer system, most computer systems are required to have any floppy disks ejected from the drive before the boot process begins in order to enable an IDE drive to be the boot device.
Alternatively, if there are no IDE drives 154 connected to the computer system, the computer system may be booted from a SCSI drive 156, which is given the lowest boot priority by the system BIOS. However, it is important to note that even though a SCSI drive is allowed to be a boot device, its host adapter 108 must have a BIOS 112 in order to enable the peripheral device connected thereto to be the boot device. Even though there is oftentimes a need to boot from a particular hard drive (having a backup data set, for example), when the host adapter 108 does not have a BIOS, booting from that device cannot be performed.
For completeness, it should be understood that the system BIOS will assign drive numbers to the peripheral devices connected to the computer system in accordance with the boot priority list 150 of FIG. 1B. Thus, assuming that no floppy disk drive is inserted in the computer system during the booting process, the system BIOS will typically assign drive numbers starting from 80h (in hexadecimal format) up to 83h for IDE devices, and drive numbers between 84h and 87h for all remaining SCSI devices. As is well known, a device that is assigned 80h during the boot process by the system BIOS will always be designated as the boot device. That is, the device that is assigned 80h as its drive number will be the boot device regardless of the fact that the user would like to boot from one of the SCSI devices.
Recently, several backup and restoration products have been developed which, upon experiencing a hard disk crash, the user may want to re-boot from a backup SCSI drive. Unfortunately, because the computer system will always attempt to rigidly boot from the primary hard drive, which is typically an IDE/EIDE drive, the user will not be able to resume work from a backup SCSI drive.
In view of the foregoing, there is a need for a technique that will enable a user to select which peripheral device to boot from, irrespective of whether the selected peripheral device is connected to a host adapter with a SCSI BIOS, and irrespective of the fact that a IDE/EIDE hard drive is also connected to the computer system.